using MediatR;
using Warehouse.ErrorCode;

namespace Warehouse.Api.Write.AllCation.Command.Stoking
{
    /// <summary>
    /// 创建出库记录命令 - 出入库管理模块
    /// </summary>
    public class CreateOutboundRecordCommand : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 出库单号
        /// </summary>
        public string OutboundOrderNumber { get; set; }

        /// <summary>
        /// 关联调拨单号（可选）
        /// </summary>
        public string AllocateId { get; set; }

        /// <summary>
        /// 出库日期
        /// </summary>
        public DateTime OutboundDate { get; set; }

        /// <summary>
        /// 产品编号
        /// </summary>
        public string ProductCode { get; set; }

        /// <summary>
        /// 产品名称
        /// </summary>
        public string ProductName { get; set; }

        /// <summary>
        /// 产品规格
        /// </summary>
        public string Specifications { get; set; }

        /// <summary>
        /// 出库数量
        /// </summary>
        public int Quantity { get; set; }

        /// <summary>
        /// 出库仓库
        /// </summary>
        public string OutboundWarehouse { get; set; }

        /// <summary>
        /// 出库库位
        /// </summary>
        public string OutboundLocation { get; set; }

        /// <summary>
        /// 出库操作人
        /// </summary>
        public string OutboundOperator { get; set; }

        /// <summary>
        /// 出库类型（正常出库、调拨出库、退货出库等）
        /// </summary>
        public string OutboundType { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Note { get; set; }

        /// <summary>
        /// 客户信息（如果是销售出库）
        /// </summary>
        public string CustomerInfo { get; set; }

        /// <summary>
        /// 运输方式
        /// </summary>
        public string TransportMethod { get; set; }

        /// <summary>
        /// 预计到达时间
        /// </summary>
        public DateTime? ExpectedArrivalTime { get; set; }
    }
} 